package cn.zwx.goods.svc.service.impl;

import cn.zwx.goods.svc.domain.bo.SpuBO;
import cn.zwx.goods.svc.domain.entity.SpuAttrValueEntity;
import cn.zwx.goods.svc.domain.entity.SpuEntity;
import cn.zwx.goods.svc.domain.enums.DelFlag;
import cn.zwx.goods.svc.mapper.SpuAttrValueMapper;
import cn.zwx.goods.svc.mapper.SpuMapper;
import cn.zwx.goods.svc.service.SpuService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * @author zhangwenxue
 */
@Service
public class SpuServiceImpl implements SpuService {

    @Resource
    private SpuMapper spuMapper;

    @Resource
    private SpuAttrValueMapper spuAttrValueMapper;



    @Override
    public Integer selectCount(LambdaQueryWrapper<SpuEntity> spuWrapper) {
        return spuMapper.selectCount(spuWrapper).intValue();
    }

    @Override
    public void insert(SpuEntity spuEntity) {
        spuMapper.insertSelective(spuEntity);
    }

    @Override
    public void batchInsertAttr(List<SpuAttrValueEntity> spuAttrValueList) {
        spuAttrValueMapper.batchInsert(spuAttrValueList);
    }

    @Override
    public List<SpuEntity> selectList(SpuBO spuBO) {
        return spuMapper.selectList(spuBO);
    }

    @Override
    public SpuEntity selectById(String spuId) {
        return spuMapper.selectById(spuId);
    }

    @Override
    public List<SpuAttrValueEntity> selectAttrBySpuId(String spuId) {
        LambdaQueryWrapper<SpuAttrValueEntity> spuWrapper = new LambdaQueryWrapper<>();
        spuWrapper.eq(SpuAttrValueEntity::getSpuId,spuId);
        return spuAttrValueMapper.selectList(spuWrapper);
    }

    @Override
    public void update(SpuEntity spuEntity) {
        spuMapper.updateByPrimaryKeySelective(spuEntity);
    }

    @Override
    public void deleteAttrBySpuId(String id) {
        LambdaQueryWrapper<SpuAttrValueEntity> spuWrapper = new LambdaQueryWrapper<>();
        spuWrapper.eq(SpuAttrValueEntity::getSpuId,id);
        spuAttrValueMapper.delete(spuWrapper);
    }

    @Override
    public void deleteSpuById(String spuId) {
        final SpuEntity spuEntity = new SpuEntity();
        spuEntity.setIsDelete(DelFlag.delete.getCode());
        spuEntity.setUpdateTime(new Date());
        spuMapper.updateByPrimaryKeySelective(spuEntity);
    }

}
